package com.ymatou.iapi.accounting.parameter;


/**
 * 账户类型
 */
public enum AccountTypeEnum {
	/**
     * 0:未定义
     */
    Undefined(0, "未定义"),

    /**
     * 1：人民币账户（默认账户）
     */
    RmbAccount(1, "人民币账户（默认账户）"),

    /**
     * 4：美元账户
     */
    UsdAccount(4, "美元账户"),

    /**
     * 5: 安利会-买家收益人民币账户
     */
    AlhRmbAccount(5, "安利会-买家收益人民币账户"),

    /**
     * 30：全球优选-买家交易中间账户
     */
    GlobalTransactionAccount(30, "全球优选-买家交易中间账户"),

    /**
     * 31：全球优选-推手销售佣金账户
     */
    GlobalSalesCommissionAccount(31, "全球优选-推手销售佣金账户"),


    /**
     * 32：全球优选-管理服务费账户（金牌服务商）
     */
    GlobalServiceFeeAccount(32, "全球优选-管理服务费账户（金牌服务商）"),


    /**
     * 33：全球优选-管理服务费账户（普通）
     */
    GlobalServiceFeeNormalAccount(33, "全球优选-管理服务费账户（普通）"),

    /**
     * 11：注册保证金人民币账户
     */
    RegisteredDepositRmbAccount(11, "注册保证金人民币账户"),

    /**
     * 12:快周转保证金人民币账户
     */
    FastTurnaroundDepositRmbAccount(12, "快周转保证金人民币账户"),

    /**
     * 13:买手广告费账户
     */
    BuyerAdvertisingFeeAccount(13, "买手广告费账户"),

    /**
     * 14:买手奖金池账户
     */
    BuyerRewardAccount(14, "买手奖金池账户"),

    /**
     * 21:系统内部人民币账户
     */
    SystemRmbAccount(21, "系统内部人民币账户"),

    /**
     * 15:拼邮溯源专项保证金
     */
    TraceSourceDepositRmbAccount(15, "拼邮溯源专项保证金"),

    /**
     * 16:黑五专项保证金
     */
    BlackFridayDepositRmbAccount(16, "黑五专项保证金"),

    /**
     * 17:全球买手专项保证金
     */
    GlobalSellerDepositRmbAccount(17, "全球买手专项保证金"),

    /**
     * 18:预售活动保证金
     */
    PreSaleDepositRmbAccount(18, "预售活动保证金"),

    /**
     * 19:直播保证金
     */
    LiveRoomRmbAccount(19, "直播保证金"),

    /**
     * 20:高客单价保证金
     */
    HighPriceRmbAccount(20, "高客单价保证金"),

    /**
     * 60：神器-买家交易中间账户
     */
    GodTransactionAccount(60, "神器-买家交易中间账户"),

    /**
     * 61：神器-商家结算不归集账户（CNY）
     */
    GodMerchantCNYAccount(61, "神器-商家结算不归集账户（CNY）"),

    /**
     * 62：神器-商家结算不归集账户（AUD）
     */
    GodMerchantAUDAccount(62, "神器-商家结算不归集账户（AUD）"),

    /**
     * 63：神器-商家结算不归集账户（HKD）
     */
    GodMerchantHKDAccount(63, "神器-商家结算不归集账户（HKD）"),

    /**
     * 64：神器-商家结算不归集账户（MYR）
     */
    GodMerchantMYRAccount(64, "神器-商家结算不归集账户（MYR）"),

    /**
     * 65：神器-商家结算不归集账户（NZD）
     */
    GodMerchantNZDAccount(65, "神器-商家结算不归集账户（NZD）"),

    /**
     * 66：神器-商家结算不归集账户（SGD）
     */
    GodMerchantSGDAccount(66, "神器-商家结算不归集账户（SGD）"),

    /**
     * 67：神器-商家结算不归集账户（CAD）
     */
    GodMerchantCADAccount(67, "神器-商家结算不归集账户（CAD）"),

    /**
     * 68：神器-商家结算不归集账户（GBP）
     */
    GodMerchantGBPAccount(68, "神器-商家结算不归集账户（GBP）"),

    /**
     * 69：神器-商家结算不归集账户（USD）
     */
    GodMerchantUSDAccount(69, "神器-商家结算不归集账户（USD）"),

    /**
     * 70：神器-商家结算不归集账户（JPY）
     */
    GodMerchantJPYAccount(70, "神器-商家结算不归集账户（JPY）"),

    /**
     * 71：神器-商家结算不归集账户（IDR）
     */
    GodMerchantIDRAccount(71, "神器-商家结算不归集账户（IDR）"),

    /**
     * 72：神器-商家结算不归集账户（KRW）
     */
    GodMerchantKRWAccount(72, "神器-商家结算不归集账户（KRW）"),

    /**
     * 73：神器-商家结算不归集账户（PHP）
     */
    GodMerchantPHPAccount(73, "神器-商家结算不归集账户（PHP）"),

    /**
     * 74：神器-商家结算不归集账户（EUR）
     */
    GodMerchantEURAccount(74, "神器-商家结算不归集账户（EUR）"),

    /**
     * 75：神器-商家收益不归集账户（CNY）
     */
    GodIncomeCNYAccount(75, "神器-商家收益不归集账户（CNY）"),

    /**
     * 76：神器-商家收益不归集账户（AUD）
     */
    GodIncomeAUDAccount(76, "神器-商家收益不归集账户（AUD）"),

    /**
     * 77：神器-商家收益不归集账户（HKD）
     */
    GodIncomeHKDAccount(77, "神器-商家收益不归集账户（HKD）"),

    /**
     * 78：神器-商家收益不归集账户（MYR）
     */
    GodIncomeMYRAccount(78, "神器-商家收益不归集账户（MYR）"),

    /**
     * 79：神器-商家收益不归集账户（NZD）
     */
    GodIncomeNZDAccount(79, "神器-商家收益不归集账户（NZD）"),

    /**
     * 80：神器-商家收益不归集账户（SGD）
     */
    GodIncomeSGDAccount(80, "神器-商家收益不归集账户（SGD）"),

    /**
     * 81：神器-商家收益不归集账户（CAD）
     */
    GodIncomeCADAccount(81, "神器-商家收益不归集账户（CAD）"),

    /**
     * 82：神器-商家收益不归集账户（GBP）
     */
    GodIncomeGBPAccount(82, "神器-商家收益不归集账户（GBP）"),

    /**
     * 83：神器-商家收益不归集账户（USD）
     */
    GodIncomeUSDAccount(83, "神器-商家收益不归集账户（USD）"),

    /**
     * 84：神器-商家收益不归集账户（JPY）
     */
    GodIncomeJPYAccount(84, "神器-商家收益不归集账户（JPY）"),

    /**
     * 85：神器-商家收益不归集账户（IDR）
     */
    GodIncomeIDRAccount(85, "神器-商家收益不归集账户（IDR）"),

    /**
     * 86：神器-商家收益不归集账户（KRW）
     */
    GodIncomeKRWAccount(86, "神器-商家收益不归集账户（KRW）"),

    /**
     * 87：神器-商家收益不归集账户（PHP）
     */
    GodIncomePHPAccount(87, "神器-商家收益不归集账户（PHP）"),

    /**
     * 88：神器-商家收益不归集账户（EUR）
     */
    GodIncomeEURAccount(88, "神器-商家收益不归集账户（EUR）"),

    /**
     * 89: 神器-盛付通通道结算不归集账户（CNY）
     */
    GodShengPayCNYAccount(89, "神器-盛付通通道结算不归集账户（CNY）"),

    /**
     * 90：神器-分销员分佣结算人民币不归集账户-HipoPay
     */
    GodDistributorHipoPayCNYAccount(90, "神器-分销员分佣结算人民币不归集账户-HipoPay（CNY）"),

    /**
     * 91: 神器-分销员分佣结算人民币账户-ShengPay
     */
    GodDistributorShengPayCNYAccount(91, "神器-分销员分佣结算人民币账户-ShengPay（CNY）"),

    /**
     * 92:神器-Yaband通道结算账户（欧元EUR）
     */
    GodYabandEURAccount(92, "神器-Yaband通道结算账户（欧元EUR）"),

    /**
     * 93:代币-（人民币CNY)
     */
    VirtualCNYCurrency(93, "代币-（人民币CNY)"),

    /**
     * 94:神器-CMB境内支付通道结算账户-（人民币CNY)
     */
    GodCMBDomesticCNYAccount(94, "神器-CMB境内支付通道结算账户-（人民币CNY)"),

    /**
     * 1061：神器-商家结算归集账户（CNY）
     */
    GodMerchantCNYCollectAccount(1061, "神器-商家结算归集账户（CNY）"),

    /**
     * 1062：神器-商家结算归集账户（AUD）
     */
    GodMerchantAUDCollectAccount(1062, "神器-商家结算归集账户（AUD）"),

    /**
     * 1063：神器-商家结算归集账户（HKD）
     */
    GodMerchantHKDCollectAccount(1063, "神器-商家结算归集账户（HKD）"),

    /**
     * 1064：神器-商家结算归集账户（MYR）
     */
    GodMerchantMYRCollectAccount(1064, "神器-商家结算归集账户（MYR）"),

    /**
     * 1065：神器-商家结算归集账户（NZD）
     */
    GodMerchantNZDCollectAccount(1065, "神器-商家结算归集账户（NZD）"),

    /**
     * 1066：神器-商家结算归集账户（SGD）
     */
    GodMerchantSGDCollectAccount(1066, "神器-商家结算归集账户（SGD）"),

    /**
     * 1067：神器-商家结算归集账户（CAD）
     */
    GodMerchantCADCollectAccount(1067, "神器-商家结算归集账户（CAD）"),

    /**
     * 1068：神器-商家结算归集账户（GBP）
     */
    GodMerchantGBPCollectAccount(1068, "神器-商家结算归集账户（GBP）"),

    /**
     * 1069：神器-商家结算归集账户（USD）
     */
    GodMerchantUSDCollectAccount(1069, "神器-商家结算归集账户（USD）"),

    /**
     * 1070：神器-商家结算账户（JPY）
     */
    GodMerchantJPYCollectAccount(1070, "神器-商家结算账户（JPY）"),

    /**
     * 1071：神器-商家结算归集账户（IDR）
     */
    GodMerchantIDRCollectAccount(1071, "神器-商家结算归集账户（IDR）"),

    /**
     * 1072：神器-商家结算归集账户（KRW）
     */
    GodMerchantKRWCollectAccount(1072, "神器-商家结算归集账户（KRW）"),

    /**
     * 1073：神器-商家结算归集账户（PHP）
     */
    GodMerchantPHPCollectAccount(1073, "神器-商家结算归集账户（PHP）"),

    /**
     * 1074：神器-商家结算归集账户（EUR）
     */
    GodMerchantEURCollectAccount(1074, "神器-商家结算归集账户（EUR）"),

    /**
     * 1075：神器-商家收益归集账户（CNY）
     */
    GodIncomeCNYCollectAccount(1075, "神器-商家收益归集账户（CNY）"),

    /**
     * 1076：神器-商家收益归集账户（AUD）
     */
    GodIncomeAUDCollectAccount(1076, "神器-商家收益归集账户（AUD）"),

    /**
     * 1077：神器-商家收益归集账户（HKD）
     */
    GodIncomeHKDCollectAccount(1077, "神器-商家收益归集账户（HKD）"),

    /**
     * 1078：神器-商家收益归集账户（MYR）
     */
    GodIncomeMYRCollectAccount(1078, "神器-商家收益归集账户（MYR）"),

    /**
     * 1079：神器-商家收益归集账户（NZD）
     */
    GodIncomeNZDCollectAccount(1079, "神器-商家收益归集账户（NZD）"),

    /**
     * 1080：神器-商家收益归集账户（SGD）
     */
    GodIncomeSGDCollectAccount(1080, "神器-商家收益归集账户（SGD）"),

    /**
     * 1081：神器-商家收益归集账户（CAD）
     */
    GodIncomeCADCollectAccount(1081, "神器-商家收益归集账户（CAD）"),

    /**
     * 1082：神器-商家收益归集账户（GBP）
     */
    GodIncomeGBPCollectAccount(1082, "神器-商家收益归集账户（GBP）"),

    /**
     * 1083：神器-商家收益归集账户（USD）
     */
    GodIncomeUSDCollectAccount(1083, "神器-商家收益归集账户（USD）"),

    /**
     * 1084：神器-商家收益归集账户（JPY）
     */
    GodIncomeJPYCollectAccount(1084, "神器-商家收益归集账户（JPY）"),

    /**
     * 1085：神器-商家收益归集账户（IDR）
     */
    GodIncomeIDRCollectAccount(1085, "神器-商家收益归集账户（IDR）"),

    /**
     * 1086：神器-商家收益归集账户（KRW）
     */
    GodIncomeKRWCollectAccount(1086, "神器-商家收益归集账户（KRW）"),

    /**
     * 1087：神器-商家收益归集账户（PHP）
     */
    GodIncomePHPCollectAccount(1087, "神器-商家收益归集账户（PHP）"),

    /**
     * 1088：神器-商家收益归集账户（EUR）
     */
    GodIncomeEURCollectAccount(1088, "神器-商家收益归集账户（EUR）"),

    /**
     * 1090：神器-分销员分佣结算人民币归集账户-HipoPay
     */
    GodDistributorHipoPayCNYCollectAccount(1090, "神器-分销员分佣结算人民币归集账户-HipoPay（CNY）"),

    ;


    private int code;

    private String message;

    AccountTypeEnum(int code, String message) {
        this.code = code;
        this.message = message;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    /**
     * 通过代码获取枚举项
     *
     * @param code
     * @return
     */
    public static AccountTypeEnum getByCode(int code) {
        for (AccountTypeEnum accountTypeEnum : AccountTypeEnum.values()) {
            if (accountTypeEnum.getCode() == code) {
                return accountTypeEnum;
            }
        }
        return null;
    }

    /**
     * 通过名称获取枚举项
     *
     * @param name 枚举名称
     * @return
     */
    public static AccountTypeEnum getByName(String name) {
        for (AccountTypeEnum accountTypeEnum : AccountTypeEnum.values()) {
            if (accountTypeEnum.name().equalsIgnoreCase(name)) {
                return accountTypeEnum;
            }
        }
        return null;
    }

    /**
     * 通过枚举值或枚举名称获取枚举项
     *
     * @param value 枚举值或枚举名称
     * @return
     */
    public static AccountTypeEnum getValue(String value) {
        if (value == null)
            return null;
        value = value.trim();
        for (AccountTypeEnum accountTypeEnum : AccountTypeEnum.values()) {
            if (accountTypeEnum.name().equalsIgnoreCase(value) || String.valueOf(accountTypeEnum.getCode()).equalsIgnoreCase(value)) {
                return accountTypeEnum;
            }
        }
        return null;
    }


    /**
     * 根据币种获取神器上商户类型，找不到返回NULL
     * 注: 不归集账户类型
     *
     * @param currencyTypeEnum
     * @return 对应HipoPay币种不归集账户类型
     */
    public static AccountTypeEnum getGodMerchantAccountType(CurrencyTypeEnum currencyTypeEnum) {
        if (currencyTypeEnum == null) return null;

        switch (currencyTypeEnum) {
            case CNY:
                return GodMerchantCNYAccount;
            case AUD:
                return GodMerchantAUDAccount;
            case HKD:
                return GodMerchantHKDAccount;
            case MYR:
                return GodMerchantMYRAccount;
            case NZD:
                return GodMerchantNZDAccount;
            case SGD:
                return GodMerchantSGDAccount;
            case CAD:
                return GodMerchantCADAccount;
            case GBP:
                return GodMerchantGBPAccount;
            case USD:
                return GodMerchantUSDAccount;
            case JPY:
                return GodMerchantJPYAccount;
            case IDR:
                return GodMerchantIDRAccount;
            case KRW:
                return GodMerchantKRWAccount;
            case PHP:
                return GodMerchantPHPAccount;
            case EUR:
                return GodMerchantEURAccount;
            default:
                return null;
        }
    }

    /**
     * 根据币种获取神器上商户类型，找不到返回NULL
     * 注: 归集账户类型
     *
     * @param currencyTypeEnum
     * @return 对应HipoPay币种归集账户类型
     */
    public static AccountTypeEnum getGodMerchantCollectAccountType(CurrencyTypeEnum currencyTypeEnum) {
        if (currencyTypeEnum == null) return null;

        switch (currencyTypeEnum) {
            case CNY:
                return GodMerchantCNYCollectAccount;
            case AUD:
                return GodMerchantAUDCollectAccount;
            case HKD:
                return GodMerchantHKDCollectAccount;
            case MYR:
                return GodMerchantMYRCollectAccount;
            case NZD:
                return GodMerchantNZDCollectAccount;
            case SGD:
                return GodMerchantSGDCollectAccount;
            case CAD:
                return GodMerchantCADCollectAccount;
            case GBP:
                return GodMerchantGBPCollectAccount;
            case USD:
                return GodMerchantUSDCollectAccount;
            case JPY:
                return GodMerchantJPYCollectAccount;
            case IDR:
                return GodMerchantIDRCollectAccount;
            case KRW:
                return GodMerchantKRWCollectAccount;
            case PHP:
                return GodMerchantPHPCollectAccount;
            case EUR:
                return GodMerchantEURCollectAccount;
            default:
                return null;
        }
    }

    /**
     * 根据币种获取神器上商户类型，找不到返回NULL
     * 注: 归集账户类型
     *
     * @param currencyTypeEnum
     * @return 对应HipoPay币种归集账户类型
     */
    public static AccountTypeEnum getGodIncomeCollectAccountType(CurrencyTypeEnum currencyTypeEnum) {
        if (currencyTypeEnum == null) return null;

        switch (currencyTypeEnum) {
            case CNY:
                return GodIncomeCNYCollectAccount;
            case AUD:
                return GodIncomeAUDCollectAccount;
            case HKD:
                return GodIncomeHKDCollectAccount;
            case MYR:
                return GodIncomeMYRCollectAccount;
            case NZD:
                return GodIncomeNZDCollectAccount;
            case SGD:
                return GodIncomeSGDCollectAccount;
            case CAD:
                return GodIncomeCADCollectAccount;
            case GBP:
                return GodIncomeGBPCollectAccount;
            case USD:
                return GodIncomeUSDCollectAccount;
            case JPY:
                return GodIncomeJPYCollectAccount;
            case IDR:
                return GodIncomeIDRCollectAccount;
            case KRW:
                return GodIncomeKRWCollectAccount;
            case PHP:
                return GodIncomePHPCollectAccount;
            case EUR:
                return GodIncomeEURCollectAccount;
            default:
                return null;
        }
    }


    /**
     * 根据币种获取神器上商户类型，找不到返回NULL
     * 注: 不归集账户类型
     *
     * @param currencyTypeEnum
     * @return 对应HipoPay币种不归集账户类型
     */
    public static AccountTypeEnum getGodIncomeAccountType(CurrencyTypeEnum currencyTypeEnum) {
        if (currencyTypeEnum == null) return null;

        switch (currencyTypeEnum) {
            case CNY:
                return GodIncomeCNYAccount;
            case AUD:
                return GodIncomeAUDAccount;
            case HKD:
                return GodIncomeHKDAccount;
            case MYR:
                return GodIncomeMYRAccount;
            case NZD:
                return GodIncomeNZDAccount;
            case SGD:
                return GodIncomeSGDAccount;
            case CAD:
                return GodIncomeCADAccount;
            case GBP:
                return GodIncomeGBPAccount;
            case USD:
                return GodIncomeUSDAccount;
            case JPY:
                return GodIncomeJPYAccount;
            case IDR:
                return GodIncomeIDRAccount;
            case KRW:
                return GodIncomeKRWAccount;
            case PHP:
                return GodIncomePHPAccount;
            case EUR:
                return GodIncomeEURAccount;
            default:
                return null;
        }
    }

}
